package com.ruoyi.restaurant.service;

import com.ruoyi.restaurant.domain.DiningTable;

import java.util.List;

public interface IDiningTableService {
    /**
     * 查询餐台列表
     *
     * @param diningTable 餐台信息
     * @return 餐台集合
     */
    public List<DiningTable> selectDiningTableList(DiningTable diningTable);

    /**
     * 根据ID查询餐台
     *
     * @param id 餐台ID
     * @return 餐台信息
     */
    public DiningTable selectDiningTableById(Long id);

    /**
     * 根据餐台号查询餐台
     *
     * @param tableNumber 餐台号
     * @return 餐台信息
     */
    public DiningTable selectDiningTableByNumber(String tableNumber);

    /**
     * 新增餐台
     *
     * @param diningTable 餐台信息
     * @return 结果
     */
    public int insertDiningTable(DiningTable diningTable);

    /**
     * 修改餐台
     *
     * @param diningTable 餐台信息
     * @return 结果
     */
    public int updateDiningTable(DiningTable diningTable);

    /**
     * 删除餐台
     *
     * @param id 餐台ID
     * @return 结果
     */
    public int deleteDiningTableById(Long id);

    /**
     * 批量删除餐台
     *
     * @param ids 需要删除的餐台ID
     * @return 结果
     */
    public int deleteDiningTableByIds(Long[] ids);

    /**
     * 开台
     *
     * @param diningTable 餐台信息（包含开台人、就餐人数、开台时间）
     * @return 结果
     */
    public int openTable(DiningTable diningTable);

    /**
     * 换台
     *
     * @param oldTableId 原餐台ID
     * @param newTableId 新餐台ID
     * @return 结果
     */
    public int changeTable(Long oldTableId, Long newTableId);

    /**
     * 预定餐台
     *
     * @param diningTable 餐台信息（包含预定人、电话、预定时间、预定人数）
     * @return 结果
     */
    public int reserveTable(DiningTable diningTable);

    /**
     * 结账（清空餐台信息，状态改为空闲）
     *
     * @param id 餐台ID
     * @return 结果
     */
    public int checkoutTable(Long id);

    /**
     * 初始化餐台数据
     *
     * @return 结果
     */
    public int initializeTables();
}

